We have developed a good number of RESTful Web Services for use with CDISC standards
These web services are also used as a testbed for future CDISC SHARE web services (through the SHARE API).
We continuously develop and test new prototype web services in cooperation with the SHARE team.
If you think an important web service is missing, please let us know, and we will try to develop it.
The SDTM and COA/QRS/QRS-FT of the CDISC-CT are usually covered by these web services.
We will in future (sponsoring welcome!) also implement ADaM and SEND Controlled Terminology.
Following versions of the CDISC-CT are supported:
Where appropriate, the CodeList version can be provided by the path parameter {codelistversion}. Examples are given below.
When no version is provided, the latest version (currently 2018-06-29) is taken.
If you would like to use the latest codelist version, the better practice is however that you query for it (resource "LatestCodeListVersion") and use the
response in the next query.
The following RESTful web services have been developed:
A number of RESTful web services use the CDISC-CT "Code tables" (developed by Anthony Chow) and are especially important for use in Define-XML "ValueList"s:
This will return a string (currently a date), embedded in XML or JSON or just as text, according to your request.
URL: http://www.xml4pharmaserver.com:8080/CDISCCTService/rest/LatestCodeListVersion
This resource is very useful for "chaining", i.e. your query requires a codelist version, and you would like your application to automatically get the latest one. In this case you use the output of this resource as a part of the input of your next query.
Remark that currently (latest version 2018-09-28) all "latest" versions are identical, independent of the standard used (SDTM, SEND, ADaM, CDASH). If this changes in future, we will add a web service where you can query for the latest version of CDISC-CT for a specific standard.
This will return a list of all the codelist versions that have been implemented, embedded in XML or JSON or just as text, according to your request.
URL: http://www.xml4pharmaserver.com:8080/CDISCCTService/rest/CodeListVersions
This resource is very useful for "chaining" and for "iteration", it will e.g. allow you have your software iterate over all versions, and find out what the differences are.
For example, you will then find out that CDISC changes definitions of terms between versions!
This will return a string ("true" or "false"), embedded in XML or JSON or just as text, according to your request.
URL: http://www.xml4pharmaserver.com:8080/CDISCCTService/rest/validcodelistversion/{codelistversion}
Examples:
http://www.xml4pharmaserver.com:8080/CDISCCTService/rest/validcodelistversion/2016-12-16
will return "true",
whereas: http://www.xml4pharmaserver.com:8080/CDISCCTService/rest/validcodelistversion/2016-12-15
will return "false".
Remark that currently (latest version 2018-09-28) all "supported" versions are independent of the standard used (SDTM, SEND, ADaM, CDASH). If this changes in future, we will add a web service where you can query for the supported version of CDISC-CT for a specific standard.
When the name of a codelist or its NCI code is submitted together with the codelist version, the string "true" is returned when the codelist is extensible.
When the codelist is not extensible, the string "false" is returned. In case the combination of codelist version and name or NCI code cannot be found, the string
"Invalid CodeList" is returned.
URL: http://www.xml4pharmaserver.com:8080/CDISCCTService/rest/CodeListExtensibleCodeListName/{codelistname}/{codelistversion}
and: http://www.xml4pharmaserver.com:8080/CDISCCTService/rest/CodeListExtensibleCodeListNCICode/{codelistncicode}/{codelistversion}
Examples:
http://www.xml4pharmaserver.com:8080/CDISCCTService/rest/CodeListExtensibleCodeListName/LBTESTCD/2015-06-26
will return "true",
whereas: http://www.xml4pharmaserver.com:8080/CDISCCTService/rest/CodeListExtensibleCodeListName/ACN/2015-12-18
will return "false".
http://www.xml4pharmaserver.com:8080/CDISCCTService/rest/CodeListExtensibleCodeListNCICode/C65047/2014-12-19
will return "true"
whereas: http://www.xml4pharmaserver.com:8080/CDISCCTService/rest/CodeListExtensibleCodeListNCICode/C66767/2016-03-25
will return "false".
This resource requires you to give the version of the CDISC-CT, as some codelists were extensible in the past and are not anymore in the latest version, and vice versa.
If you just want to know whether the latest version of your codelist is extensible, let your application use the resource "LatestCodeListVersion" and use the response of
it as input in the current request.
The name of the codelist (e.g. "FREQ") needs to be provided. If no codelist version is provided, the latest version (currently '2018-09-28') is taken.
URL: http://www.xml4pharmaserver.com:8080/CDISCCTService/rest/CodedValuesFromCodeListName/{codelistname}
and: http://www.xml4pharmaserver.com:8080/CDISCCTService/rest/CodedValuesFromCodeListName/{codelistname}/{codelistversion}
Examples:
http://www.xml4pharmaserver.com:8080/CDISCCTService/rest/CodedValuesFromCodeListName/LAT/2014-03-28
will return 7 allowed values, from 'BILATERAL' to 'UNILATERAL',
whereas: http://www.xml4pharmaserver.com:8080/CDISCCTService/rest/CodedValuesFromCodeListName/DIR
will return 42 allowed values from the latest codelist version (currently '2018-09-28'), from 'TEMPORAL' to 'VENTROLATERAL'.
You can also use this service to look up the allowed values for trial summary parameters. For example:
http://www.xml4pharmaserver.com:8080/CDISCCTService/rest/CodedValuesFromCodeListName/TTYPE
will return all allowed values for the trial summary parameter "Trial Type" (TSPARMCD=TTYPE)
The NCI code of the codelist (e.g. "C71113") needs to be provided. If no codelist version is provided, the latest version (currently '2017-12-22') is taken.
URL: http://www.xml4pharmaserver.com:8080/CDISCCTService/rest/CodedValuesFromCodeListNCICode/{codelistncicode}
and: http://www.xml4pharmaserver.com:8080/CDISCCTService/rest/CodedValuesFromCodeListNCICode/{codelistncicode}/{codelistversion}
Examples:
http://www.xml4pharmaserver.com:8080/CDISCCTService/rest/CodedValuesFromCodeListNCICode/C99073/2014-03-28
will return 7 allowed values, from 'BILATERAL' to 'UNILATERAL',
whereas: http://www.xml4pharmaserver.com:8080/CDISCCTService/rest/CodedValuesFromCodeListNCICode/C99074
will return 33 allowed values from the latest codelist version (currently '2018-09-28'), from 'TEMPORAL' to 'VENTROLATERAL'.
When a CDISC test code (e.g. "SYSBP") is submitted together with the codelist name (e.g. "LBTESTCD") the CDISC test name is returned. It is important that the codelist name is also provided,
as the test code is context dependent. For example "ALB" is both "Albumin" (LBTESTCD) as "Albania" (COUNTRY).
In the example case the response is: "Albumin"
URL: http://www.xml4pharmaserver.com:8080/CDISCCTService/rest/TestNameFromTestCode/{testcd}/{codelist}
OR: http://www.xml4pharmaserver.com:8080/CDISCCTService/rest/TestNameFromTestCode/{testcd}/{codelist}/{codelistversion}
Example: http://www.xml4pharmaserver.com:8080/CDISCCTService/rest/TestNameFromTestCode/ALB/LBTESTCD
Or (for an earlier version of CDISC-CT): http://www.xml4pharmaserver.com:8080/CDISCCTService/rest/TestNameFromTestCode/ALB/LBTESTCD/2014-03-28
You can also query for Trial Summary Parameter names given the parameter code
Example: http://www.xml4pharmaserver.com:8080/CDISCCTService/rest/TestNameFromTestCode/TBLIND/TSPARMCD
OR: http://www.xml4pharmaserver.com:8080/CDISCCTService/rest/TestNameFromTestCode/TBLIND/TSPARMCD/2014-03-28
Returning: 'Trial Blinding Schema'
When a CDISC test code (e.g. "SYSBP") is submitted together with the codelist name (e.g. "LBTESTCD") the NCI code is returned. It is important that the codelist name is also provided,
as the test code is context dependent. For more information about NCI codes for CDISC controlled terminology see:
http://www.cancer.gov/cancertopics/cancerlibrary/terminologyresources/cdisc
In the example case the response is: "C64431"
URL: http://www.xml4pharmaserver.com:8080/CDISCCTService/rest/NCICodeFromTestCode/{testcd}/{codelist}
OR: http://www.xml4pharmaserver.com:8080/CDISCCTService/rest/NCICodeFromTestCode/{testcd}/{codelist}/{codelistversion}
Example: http://www.xml4pharmaserver.com:8080/CDISCCTService/rest/NCICodeFromTestCode/ALB/LBTESTCD
You can also do the same for a Trial Summary Parameter.
Example: http://www.xml4pharmaserver.com:8080/CDISCCTService/rest/NCICodeFromTestCode/TBLIND/TSPARMCD/2015-06-26
Returning: 'C49658'
When a CDISC test code (e.g. "SYSBP") is submitted together with the codelist name (e.g. "LBTESTCD") the CDISC definition is returned. It is important that the codelist name is also provided,
as the test code is context dependent.
In the example case the response is: "A measurement of the albumin protein in a biological specimen".
URL: http://www.xml4pharmaserver.com:8080/CDISCCTService/rest/CDISCDefinitionFromCDISCTestCode/{testcd}/{codelist}
OR: http://www.xml4pharmaserver.com:8080/CDISCCTService/rest/CDISCDefinitionFromCDISCTestCode/{testcd}/{codelist}/{codelistversion}
Example: http://www.xml4pharmaserver.com:8080/CDISCCTService/rest/CDISCDefinitionFromCDISCTestCode/ALB/LBTESTCD
And similar for a Trial Summary parameter.
Example: http://www.xml4pharmaserver.com:8080/CDISCCTService/rest/CDISCDefinitionFromCDISCTestCode/TBLIND/TSPARMCD
Returning: 'The name of a code list that contains terms to define the type of blinding for the trial. (NCI)'
URL: http://www.xml4pharmaserver.com:8080/CDISCCTService/rest/ValidValueInSDTMCodeList/{codedvalue}/{codelist}
OR: http://www.xml4pharmaserver.com:8080/CDISCCTService/rest/ValidValueInSDTMCodeList/{codedvalue}/{codelist}/{codelistversion}
Example: http://www.xml4pharmaserver.com:8080/CDISCCTService/rest/ValidValueInSDTMCodeList/COMPLETED/NCOMPLT
returns the string "true"
Example: http://www.xml4pharmaserver.com:8080/CDISCCTService/rest/ValidValueInSDTMCodeList/INCOMPLETED/NCOMPLT
returns the string "false"
The coded value itself may contain blanks, that is no problem, e.g.:
http://www.xml4pharmaserver.com:8080/CDISCCTService/rest/ValidValueInSDTMCodeList/ADVERSE EVENT/NCOMPLT/2015-09-25
IMPORTANT REMARK: Do NOT use this service to validate terms from the CDISC "UNIT" codelist, use the method "Get whether a CDISC unit is a correct CDISC unit" instead. Reason: some units contain a forward slash, which may be misinterpreted by the RESTful web service
URL: http://www.xml4pharmaserver.com:8080/CDISCCTService/rest/ValidValueInSDTMCodeList/{codedvalue}/{codelistncicode}/{codelistversion}
Example: http://www.xml4pharmaserver.com:8080/CDISCCTService/rest/ValidValueInSDTMCodeListNCICode/MULTIPLE/C74457/2016-03-25
returns the string "false"
Example: http://www.xml4pharmaserver.com:8080/CDISCCTService/rest/ValidValueInSDTMCodeListNCICode/WHITE/C74457/2016-03-25
returns the string "true"
URL: http://www.xml4pharmaserver.com:8080/CDISCCTService/rest/CDISCSDSValueDecode/{codedvalue}/{codelistname}
OR: http://www.xml4pharmaserver.com:8080/CDISCCTService/rest/CDISCSDSValueDecode/{codedvalue}/{codelistname}/{codelistversion}
Examples:
http://www.xml4pharmaserver.com:8080/CDISCCTService/rest/CDISCSDSValueDecode/M/SEX/2016-06-24
returns the value "Male"
http://www.xml4pharmaserver.com:8080/CDISCCTService/rest/CDISCSDSValueDecode/Y/NY
returns the value "Yes"
It is important that the name of the codelist is given, as a coded value may have different decodes depending on the codelist. For example:
http://www.xml4pharmaserver.com:8080/CDISCCTService/rest/CDISCSDSValueDecode/ALB/COUNTRY/2016-06-24
will return "Albania",
whereas:
http://www.xml4pharmaserver.com:8080/CDISCCTService/rest/CDISCSDSValueDecode/ALB/LBTESTCD
returns the value "Albumin"
When an NCI code (e.g. "C64431") is submitted the SDTM (submission) term or terms are returned.
In the example case the response is: "ALB" and "Albumin".
URL: http://www.xml4pharmaserver.com:8080/CDISCCTService/rest/SDTMTermFromNCICode/{ncicode}
URL: http://www.xml4pharmaserver.com:8080/CDISCCTService/rest/SDTMTermFromNCICode/{ncicode}/{codelistversion}
Example: http://www.xml4pharmaserver.com:8080/CDISCCTService/rest/SDTMTermFromNCICode/C64431
OR e.g.: http://www.xml4pharmaserver.com:8080/CDISCCTService/rest/SDTMTermFromNCICode/C64431/2016-03-25
You can also do so for a trial summary parameter value.
Example: http://www.xml4pharmaserver.com:8080/CDISCCTService/rest/SDTMTermFromNCICode/C15228
OR e.g.: http://www.xml4pharmaserver.com:8080/CDISCCTService/rest/SDTMTermFromNCICode/C15228/2015-03-27
Returning: 'DOUBLE BLIND'
IMPORTANT REMARK: slight change as of 2017-04-16: The structure of the response was slightly changed. The returned terms are now packed within an "SDTMTerm" element.
The reason is that in some cases, the same NCI code stands for two terms, i.e. once the "coded term" (such as "ALB") and once the "decoded term" (such as "Albumin").
Although we understand the reasoning behind this, we consider this as major CDISC-CT design error. The NCI code is essentially the key, and a key should never have different values.
Essentially, the "decoded term" is nothing else than the English representation of the "coded term". However, there can and will be representations in other languages too.
However, the CDISC-CT team considers the "coded value" and the "decoded value" (i.e. the English representation) as being equal, thereby ignoring that there are other languages in the world than English.
This enormously hinders the use of the system. At least, the "decoded term" should have a "language attribute", stating that e.g. "Albumin" is the English term for the code "ALB".
When an NCI code (e.g. "C64431") is submitted the CDISC preferred term is returned.
In the example case the response is: "Albumin Measurement" (remark that this is not the submission value).
URL: http://www.xml4pharmaserver.com:8080/CDISCCTService/rest/CDISCPreferredTermFromNCICode/{ncicode}
URL: http://www.xml4pharmaserver.com:8080/CDISCCTService/rest/CDISCPreferredTermFromNCICode/{ncicode}/{codelistversion}
Example: http://www.xml4pharmaserver.com:8080/CDISCCTService/rest/CDISCPreferredTermFromNCICode/C64431
You can also do so for a trial summary parameter value.
Example: http://www.xml4pharmaserver.com:8080/CDISCCTService/rest/CDISCPreferredTermFromNCICode/C15228
OR: http://www.xml4pharmaserver.com:8080/CDISCCTService/rest/CDISCPreferredTermFromNCICode/C15228/2015-03-27
Returning: 'Double Blind Study'
When an NCI code (e.g. "C64431") is submitted the CDISC definition is returned.
In the example case the response is: "A measurement of the albumin protein in a biological specimen".
URL: http://www.xml4pharmaserver.com:8080/CDISCCTService/rest/CDISCDefinitionFromNCICode/{ncicode}
OR: http://www.xml4pharmaserver.com:8080/CDISCCTService/rest/CDISCDefinitionFromNCICode/{ncicode}/{codelistversion}
Example: http://www.xml4pharmaserver.com:8080/CDISCCTService/rest/CDISCDefinitionFromNCICode/C64431
You can also do so for a trial summary parameter value.
Example: http://www.xml4pharmaserver.com:8080/CDISCCTService/rest/CDISCDefinitionFromNCICode/C15228
Returning: 'A study in which neither the subject nor the investigator nor the research team interacting with the subject or data during the trial knows what treatment a subject is receiving. (CDISC glossary)'
When a CDISC unit (e.g. "mmHg") is submitted the corresponding universal UCUM notation is returned.
In the example case the response is: "mm[Hg]".
If "IN" (inches) is submitted, "[in_i]" is returned.
This service has been established as the whole world (including the EHR world) is using UCUM notation for units, but CDISC decided to reinvent the wheel.
URL: http://www.xml4pharmaserver.com:8080/CDISCCTService/rest/UCUMFromCDISCUnit/{cdiscunit}
Example: http://www.xml4pharmaserver.com:8080/CDISCCTService/rest/UCUMFromCDISCUnit/mmHg
No fear if the CDISC unit contains a slash "/" itself. For example if you submit "BEATS/MIN" using:
http://www.xml4pharmaserver.com:8080/CDISCCTService/rest/UCUMFromCDISCUnit/BEATS/MIN
the correct result "{beats}/min" will be obtained.
For more information about the UCUM notation and its specification, see: http://www.unitsofmeasure.org
For more information about why CDISC should switch to UCUM, see e.g. http://cdiscguru.blogspot.co.at/2014/04/using-ucum-units-for-cdisc-send.html
and/or http://cdisc-end-to-end.blogspot.co.at/2014/09/the-meaning-of-unit.html
A presentation given at the CDISC German-speaking User Group Meeting 2013 can be found here.
When a CDISC unit (e.g. "mmHg") is submitted the string "true" (valid) or "false" (invalid) will be returned.
In the example case the response is: "true".
If e.g. "mm/Hg" is submitted, the result is "false".
URL: http://www.xml4pharmaserver.com:8080/CDISCCTService/rest/ValidCDISCUnit/{cdiscunit}
Example: http://www.xml4pharmaserver.com:8080/CDISCCTService/rest/ValidCDISCUnit/mmHg
No fear if the CDISC unit contains a slash "/" itself. For example if you submit "beats/min" using:
http://www.xml4pharmaserver.com:8080/CDISCCTService/rest/ValidCDISCUnit/beats/min
the correct result "true" will be obtained.
Addition December 2016: as we found out that CDISC units are NOT consistent across versions (i.e. the way of writing the unit sometimes changed between versions),
one can now also add the Controlled Terminology Version as an extra parameter.
URL: http://www.xml4pharmaserver.com:8080/CDISCCTService/rest/ValidCDISCUnit/{cdiscunit}/{codelistversion}
For example the unit "BEATS/MIN" was replaced by "beats/min" as of version 2015-06-26.
So if you (or your system) submits:
http://www.xml4pharmaserver.com:8080/CDISCCTService/rest/ValidCDISCUnit/BEATS/MIN/2015-03-27
the result will be "true".
If you however sumbit http://www.xml4pharmaserver.com:8080/CDISCCTService/rest/ValidCDISCUnit/BEATS/MIN/2015-06-26
the result will be "false",
and if you submit:
http://www.xml4pharmaserver.com:8080/CDISCCTService/rest/ValidCDISCUnit/beats/min/2015-06-2
the result will be again "true".
If you do NOT provide a codelist version, the latest version that is available will be used.
When a CDISC unit (e.g. "mmHg") together with a vital signs test code is submitted the string "true" (valid) or "false" (invalid) will be returned.
In case the value for the test code itself is invalid, the string "unrecognized test code" is returned.
If e.g. "DIABP" together with "kg/m2" is submitted, the string "false" is returned.
If however "BMI" together with "kg/m2" is submitted, the string "true" is returned.
URL: http://www.xml4pharmaserver.com:8080/CDISCCTService/rest/ValidCDISCUnitForCDISCTestCode/{testcode}/{cdiscunit}
Example: http://www.xml4pharmaserver.com:8080/CDISCCTService/rest/ValidCDISCUnitForCDISCTestCode/DIABP/mmHg
IMPORTANT REMARK: in some cases the "casing" of some CDISC units over time, which makes the later version "out of sync" with the earlier published combination unit/test-code.
For example, CDISC has published that "BEATS/MIN" is valid value for the test "HR" (heart rate), but the latest versions of the CDISC controlled terminology do not contain "BEATS/MIN" anymore. They contain "beats/min".
Just ignoring casing is however not a solution for this either...
When a "position" (e.g. "DECUBITUS") together with a vital signs test code (e.g. "DIABP") is submitted the string "true" (valid) or "false" (invalid) will be returned.
In case the value for the test code itself is invalid, the string "unrecognized test code" is returned.
If e.g. "DIABP" together with "LYING" is submitted, the string "false" is returned.
If however "DIABP" together with "LATERAL DECUBITUS" is submitted, the string "true" is returned.
URL: http://www.xml4pharmaserver.com:8080/CDISCCTService/rest/ValidPositionForCDISCTestCode/{testcode}/{position}
Example: http://www.xml4pharmaserver.com:8080/CDISCCTService/rest/ValidPositionForCDISCTestCode/DIABP/LATERAL DECUBITUS
Remark: blanks in the "position" are unproblematic.
The following table provides a list of the variable names (first argument in the query) and for what "standardized test value variable" the results are returned:
Test code variable | Test result variable |
---|---|
EGTESTCD | EGSTRESC |
VSTESTCD | VSSTRESC |
SCTESTCD | SCSTRESC |
TRPARMCD | TSVAL |
TUTESTCD | TUIDRS |
TRTESTCD | TRPROPRS |
ONCRTSCD | ONCRSR |
CVFATSCD | CVFARS |
When a standardized character result (e.g. "ACUTE RIGHT VENTRICULAR WALL MYOCARDIAL INFARCTION") for a given TESTCD (e.g. "MI" - Myocardial infarction in the EG domain) is sumbitted,
the string "true" (valid) or "false" (invalid) will be returned. In case the value for the test code itself is invalid, the string "unrecognized test code" is returned.
URL: http://www.xml4pharmaserver.com:8080/CDISCCTService/rest/ValidStandardResultForCDISCTestCode/{testcode}/{egstresc}
Examples: http://www.xml4pharmaserver.com:8080/CDISCCTService/rest/ValidStandardResultForCDISCTestCode/MI/ACUTE ANTEROLATERAL WALL MYOCARDIAL INFARCTION
OR:
http://xml4pharmaserver.com:8080/CDISCCTService/rest/ValidStandardResultForCDISCTestCode/AXISVOLT/NORTHWEST AXIS
OR:
http://xml4pharmaserver.com:8080/CDISCCTService/rest/ValidStandardResultForCDISCTestCode/CYTORESP/CYTOGENETIC CR
OR:
http://www.xml4pharmaserver.com:8080/CDISCCTService/rest/ValidStandardResultForCDISCTestCode/HFPEFNW/CLINICAL SIGNIFICANT OR RAPID WEIGHT GAIN
Remark: blanks in the "position" are unproblematic, and also here the underlying database is case-unsensitive.
As soon as more of these codetables are published on the CDISC website or available from SHARE, they will be implemented
This service returns the the text "Req" (for "required"), "Exp" (for "expected) or "Perm" (for "permissible") for an SDTM variable (uppercase written)
given the domain code (uppercase), and the version of the SDS standard ("1.2", "1.3", or "1.4") or the version of the SDTM-IG ("3.1.2", "3.1.3" or "3.2")
(There is a 1:1 relationship between the SDTM-IG version and the SDS version)
It is important to also pass the domain code, as e.g. the variable VISITNUM is required, expected or permissible, depending on the domain.
The version of the SDS/SDTM-IG standard is also important as the "core" of many variables has been changed upon a new version!
This service returns the the label text for an SDTM variable (uppercase written)
given the domain code (uppercase), and the version of the SDS standard ("1.2", "1.3", or "1.4") or the version of the SDTM-IG ("3.1.2", "3.1.3" or "3.2")
(There is a 1:1 relationship between the SDTM-IG version and the SDS version)
It is important to also pass the domain code, as some variables have different labels (althought this should NOT be the case) depending on the domain.
The version of the SDS standard is also important as the variable labels may depend on the SDS version
This service returns the SDTM "Role" of an SDTM variable given the domain code (uppercase), and the version of the SDS standard ("1.2", "1.3", or "1.4") or the version of the SDTM-IG ("3.1.2", "3.1.3" or "3.2")
URL: http://www.xml4pharmaserver.com:8080/CDISCCTService/rest/CDISCRoleFromSDTMVariable/{version}/{domain}/{varName}The version of the SDS/SDTM-IG standard is important as the roles have in some cases changed over time and the value may depend on the SDS/SDTM-IG version
This service returns the SAS-XPT datatype (which can either be "char" or "num") of an SDTM variable given the domain code (uppercase), and the version of the SDS standard ("1.2", "1.3", or "1.4") or the version of the SDTM-IG ("3.1.2", "3.1.3" or "3.2")
URL: http://www.xml4pharmaserver.com:8080/CDISCCTService/rest/CDISCSASXPTDataTypeFromSDTMVariable/{version}/{domain}/{varName}The version of the SDS/SDTM-IG standard is important for a small number of cases, the datatypes have changed over time and the value may depend on the SDS/SDTM-IG version
This service returns the the "CDISC Notes" as text for an SDTM variable (uppercase written) given the domain code (uppercase), and the version of the SDS standard ("1.2", "1.3", or "1.4") or the version of the SDTM-IG ("3.1.2", "3.1.3" or "3.2")
It is important to also pass the domain code, as some variables have different CDISC notes depending on the domain.
The version of the SDS/SDTM-IG standard is also important as the "CDISC Notes" oftendepend on the SDS/SDTM-IG version
Recent discussions in different forums have made it clear that the SDTM-IG must be interpreted in such a way that when a variable has controlled terminology, the collected value must be mapped to the "CDISC Submission Value". This also (no exception!) applies to units in the variable --ORRESU. For example, if a concentration was measured in "mol/m3", one still must put the value "mmol/L" in LBORRESU, as the latter is the "CDISC submission value" from the "UNIT" codelist, and "mol/m3" is a "CDISC synonym" for it.
Checking whether a collected term or unit is a synonym for a "CDISC submission value" is an extremely challenging (usually manual) task. Therefore we created a RESTful web service allowing to find out whether your value is a (by CDISC published) synonym of an SDTM submission value. This webservice can help in automating replacing "synonyms" into the "CDISC submission values".
URL: http://www.xml4pharmaserver.com:8080/CDISCCTService/rest/SDTMTermFromSynonym/{synonym}/{codelistversion}As can easily be found out, this web service especially makes sense for units, and less for other terms, as usually the "CDISC synonym" is more a description than a real synonym. For example, you can submit:
http://www.xml4pharmaserver.com:8080/CDISCCTService/rest/SDTMTermFromSynonym/Myeloid Maturation Index, delivering the submission value "MYCEMIDX".Remarks:
Returns all synonyms for a given SDTM submission value term
URL: http://www.xml4pharmaserver.com:8080/CDISCCTService/rest/SDTMSynonymFromSDTMSubmissionValue/{sdtmterm}Will in both cases return 'Microalbumin'
Returns all synonyms for a given SDTM submission value term by its NCI code
URL: http://www.xml4pharmaserver.com:8080/CDISCCTService/rest/SDTMSynonymFromNCICode/{ncicode} URL: http://www.xml4pharmaserver.com:8080/CDISCCTService/rest/SDTMSynonymFromNCICode/{ncicode}/{codelistversion}Will in both cases return 'Body Fat' and 'Fat Tissue'
Remark: CDISC has been very inconsequent here. When you ask for the "synonyms" by the NCI code (which is the unique identifier), you will sometimes also get the "preferred term" (the "submission value"), and sometimes not at all. We have not tried to correct this.
Remark: for the two "synonym" services, you can use the service for finding all possible "allowed" ways of writing a unit.
The CDISC way of implementing "units" is however far from ideal: it is based on "tradition"
(i.e. all possible ways of "traditionally" writing a unit), rather than on science.
Unfortunately, CDISC is still refusing to allow the use of UCUM notation for units.
Remark for all services: Test codes and codelist names are case sensitive, so if you use:
http://www.xml4pharmaserver.com:8080/CDISCCTService/rest/ValidPositionForCDISCTestCode/diaBP/LATERAL DECUBITUS
"unrecognized test code" will be returned, and if you use:
http://www.xml4pharmaserver.com:8080/CDISCCTService/rest/ValidPositionForCDISCTestCode/DIABP/Lateral Decubitus
"false" will be returned, as the valid value is "LATERAL DECUBITUS" (all uppercase).
IMPORTANT: In the future, we will extend these "ValueList" services to other SDTM domains such as LB.
For example, if you would submit "ml" together with "ALB" ("Albumin"), the answer would be "false", as the "Albumin" test is about a concentration
Of course, it would be much better when CDISC switches to UCUM anyway, but also then, a similar web service can be provided (for example: is "mm[Hg]" a valid unit for test "SYSBP"?)
Media types
Our web services support the following media types:
whereas the JSON response will look like:
i.e. the server date time (UTC) will be returned, together with the original HTTP request URL (in the "WebServiceRequest" element) as well as the response of the query (in the element "Response").
You can of course use the information to ensure that in your own application, the response is correctly treated.
Most of these services have been implemented in the Smart Dataset-XML Viewer, but you can of course use them
in any software application that you want using RESTful web services.
Also see our blogs at blogspot
If you have any suggestions for other web services which have to do with CDISC and CDISC Controlled Terminology, please let us know.
Courtesy of XML4Pharma - last update: February 2018